package com.hongye.es.controller;


import com.hongye.common.entity.BrokerEntity;
import com.hongye.es.service.EsHouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/es")
public class EsHouseController {
   @Autowired
   private EsHouseService esHouseService;


   //分页性能优化
    //ES 的分页是较坑的，为啥呢?举个例子吧，假如你每页是 10 条数据，你现在要查询第 100 页，实际上是会把每个 Shard 上存储的前 1000 条数据都查到一个协调节点上。
    //冷热分离
   //ES 可以做类似于 MySQL 的水平拆分，就是说将大量的访问很少、频率很低的数据，单独写一个索引，然后将访问很频繁的热数据单独写一个索引。

    @GetMapping({"/","/index"})
    public String index(){
        return "index";
    }

    //批量添加es中
    @RequestMapping("/addEs")
    public  Boolean addEs() throws IOException {
        return esHouseService.addEs();
    }


    //单个对象加入es中
    @RequestMapping("/add")
    public  void add(@RequestBody BrokerEntity brokerEntity) throws IOException {
        esHouseService.add(brokerEntity);
    }


    //实现搜索功能
    @RequestMapping("/findPageList")
    public List<Map<String,Object>> findPageList(@RequestParam String key,
                                               @RequestParam int pageNum,
                                               @RequestParam int pageSize) throws Exception {
        return esHouseService.searchPageHighlightBuilder(key,pageNum,pageSize);
    }





}
